#pragma once

#include <allegro5/allegro.h>
#include <memory>

class Input;
class Timer;
class TestArrow;
class LevelGrid;

class TowerDefense
{
private:
	std::shared_ptr<ALLEGRO_DISPLAY>	_display;

	std::shared_ptr<Timer>		_timer;
	std::shared_ptr<Input>		_input;
	std::shared_ptr<TestArrow>	_test_arrow;
	std::shared_ptr<LevelGrid>	_level_grid;

	void _InitializeAllegro();

	void _UpdateScene(float dt);
	void _DrawScene();

public:
	TowerDefense();
	~TowerDefense();

	int Run();
};